/**
 * 应用通用类型定义
 * 统一管理所有接口和类型
 */

/**
 * 同步状态类型
 */
export type SyncStatus = 'local' | 'pending' | 'synced' | 'syncing' | 'error'

/**
 * 基础文件夹接口
 */
export interface BaseFolder {
  id: number
  name: string
  count: number
  isDefault?: boolean
  isShared?: boolean
  parentId?: number | null
  sortOrder?: number
  createdAt: string
  updatedAt: string
  syncStatus?: SyncStatus
  serverId?: string
}

/**
 * 扩展文件夹接口（用于前端显示）
 */
export interface Folder extends BaseFolder {
  children?: Folder[]
  isExpanded?: boolean
  shareLink?: string
  sharePassword?: string
}

/**
 * 基础笔记接口
 */
export interface BaseNote {
  id: number
  title: string
  content: string
  folderId: number | null
  createdAt: string
  updatedAt: string
  syncStatus?: SyncStatus
  serverId?: string
  tags?: string[]
}

/**
 * 扩展笔记接口（用于前端显示）
 */
export interface Note extends BaseNote {
  isShared?: boolean
  shareLink?: string
  sharePassword?: string
}

/**
 * 应用数据接口
 */
export interface AppData {
  folders: Folder[]
  notes: Note[]
  currentFolder: string
  currentNoteId: number | null
}

/**
 * 通知类型
 */
export type NotificationType = 'success' | 'error' | 'warning' | 'info'

/**
 * 通知配置接口
 */
export interface NotificationConfig {
  type?: NotificationType
  title?: string
  message: string
  duration?: number
  closable?: boolean
}

/**
 * 同步结果接口
 */
export interface SyncResult {
  success: boolean
  failedCount: number
  totalCount: number
}

/**
 * 同步状态信息接口
 */
export interface SyncStatusInfo {
  hasPendingData: boolean
  pendingCount: number
  folders: number
  notes: number
}